package com.cs.beneficios.web.action;

import com.cs.beneficios.business.entity.BeneficiarioDAO;
import com.cs.beneficios.business.entity.VflexDAO;
import com.cs.beneficios.business.model.BeneficiarioVO;
import com.cs.beneficios.common.ConnectionFactory;
import com.cs.beneficios.common.util.ControlExceptions;
import com.cs.paoyer.administration.exception.AdministrationUserException;
import com.cs.paoyer.administration.util.AccessControl;
import com.cs.paoyer.common.exception.CommonUserException;
import com.cs.paoyer.common.exception.UserException;

import java.io.IOException;

import java.sql.SQLException;

import java.util.ArrayList;
import java.util.Collection;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;


public class CargarBeneficiarioAction extends Action 
{
  public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
  {
      ActionMessages messages = new ActionMessages();
      //ConnectionFactory cf = new ConnectionFactory("beneficios","beneficios");
	  ConnectionFactory cf = new ConnectionFactory();
      try
      {
            AccessControl access = new AccessControl();
            access.validateAccess(mapping,request,response);
            String strCode =  request.getParameter("code");
           
            BeneficiarioVO objBeneVO = new BeneficiarioVO();
           
            //objBeneVO = new BeneficiarioVO();
            objBeneVO.setCode(new Long(strCode));
            try
              {
                BeneficiarioDAO objBeneDAO = new BeneficiarioDAO(cf);
                //System.err.println("VOY A BUSCAR EL DATO");
                ArrayList beneSelectList = (ArrayList)objBeneDAO.findBeneficiarioByCriterea(objBeneVO,"ConsultarBeneficiario");
                if(beneSelectList != null && beneSelectList.size() > 0){
                    objBeneVO = (BeneficiarioVO) beneSelectList.get(0);
                }
                cf.closeConnection(objBeneDAO.getConn());
              }catch(SQLException e)
              {
				System.err.println("/******** TDSUB - cwsub");
				e.printStackTrace();
				System.err.println("TDSUB - cwsub ********/");
                ControlExceptions.insertException(e,cf);
              }
          
              Collection comunas=null;
              Collection barrios=null;
              Collection zonas=null;
              try
              {
                VflexDAO valorFlexDAO = new VflexDAO(cf); 
                comunas = valorFlexDAO.getVflex("COMUNA");
                barrios = valorFlexDAO.getVflex("BARRIO");
                zonas = valorFlexDAO.getVflex("ZONA");
                request.setAttribute("comunas",comunas);
                request.setAttribute("barrios",barrios);
                request.setAttribute("zonas",zonas);
                cf.closeConnection(valorFlexDAO.getConn());
              }catch(SQLException e)
              {
				System.err.println("/******** TDSUB - cwsub");
				e.printStackTrace();
				System.err.println("TDSUB - cwsub ********/");
                ControlExceptions.insertException(e,cf);
              }
              
              if(objBeneVO == null){
                  request.setAttribute("msg","Ocurrio un error relacionado con el beneficiario.");
                  return mapping.getInputForward();
              }
                        
              request.setAttribute("beneficiario", objBeneVO);
            
      }catch (UserException ue) {
            ControlExceptions.insertException(ue,cf);
            messages.add("msgWarn",  new ActionMessage("loginForm.message."                                                                                                                                + ue.getExceptionVO().getId()));
            saveMessages(request, messages);
            if(ue.getExceptionVO().getId()==AdministrationUserException.ENDED_SESSION)
            {       
                  response.sendRedirect(request.getContextPath()+"/index.jsp");
            }
            else if(ue.getExceptionVO().getId()==CommonUserException.NOT_ALLOWED_RESOURCE)
            {
                response.sendRedirect(request.getContextPath()+"/admin/tile/invalidatedResource.jsp");
            }
            else
            {
                return mapping.getInputForward();
            }
      }
      
      return mapping.findForward("success");
  }
}
